package com.longrise.co.ui.mine.contract;

import com.longrise.LEAP.Base.Objects.EntityBean;
import com.longrise.co.ui.carfiles.model.UploadBean;
import com.longrise.co.ui.mine.model.ComplaintDetailBean;
import com.longrise.co.ui.mine.model.EditCarBean;
import com.longrise.co.ui.mine.model.EvaluationDetailBean;
import com.longrise.co.ui.mine.model.Message;
import com.longrise.co.ui.mine.model.MessageDetail;
import com.longrise.co.ui.mine.model.MineComplaintBean;
import com.longrise.co.ui.mine.model.MineEvaluationBean;
import com.longrise.co.ui.mine.model.UserInfo;
import com.longrise.co.ui.mine.model.VerifiedCarBean;
import com.ly.common.base.BaseModel;
import com.ly.common.base.BasePresenter;
import com.ly.common.base.BaseView;

import rx.Observable;


/**
 * Created by luoyang on 2017-6-22.
 */

public interface MineContract {

     interface View<T> extends BaseView {
        void requestSuccess(T t);
         void onRequestComplete();
    }

    interface AuthCarView<T> extends View<T> {
        void sendMsgSuccess();
        void uploadSuccess(UploadBean bean);
    }

    interface MyCarView<T> extends View<T> {
        void deleteCarSuccess();
        void modifyCarSuccess();
    }

    interface MineView<T> extends View<T> {
        void modifySuccess();
    }


     interface Model extends BaseModel {

        Observable<UserInfo> userInfoRequest(EntityBean bean);

        Observable<String> modifyUserInfoRequest(EntityBean bean);

        Observable<MineComplaintBean> complaintListRequest(EntityBean bean);

        Observable<MineEvaluationBean> evaluationListRequest(EntityBean bean);

        Observable<ComplaintDetailBean> complaintDetailRequest(EntityBean bean);

        Observable<EvaluationDetailBean> evaluationDetailRequest(EntityBean bean);

         Observable<VerifiedCarBean> verifiedCarRequest(EntityBean bean);

         Observable<String> modifyPwdRequest(EntityBean bean);

         Observable<String> deleteCarRequest(EntityBean bean);

         Observable<EditCarBean> editCarRequest(EntityBean bean);

         Observable<Message> messageList(EntityBean bean);

         Observable<MessageDetail> messageDetail(EntityBean bean);
    }

     abstract class Presenter extends BasePresenter<View , Model> {
         public abstract void getUserInfo(boolean isProcess);
         public abstract void modifyUserInfo(EntityBean bean);
         public abstract void getMyCarList(String carNo, boolean isShowProcess);
         public abstract void userFeedBack(String content);
         public abstract void getComplaintList(String carNo, int pageNo, boolean isProcess);
         public abstract void getEvaluationList(String carNo, int pageNo, boolean isProcess);

         public abstract void getComplaintDetail(String complaintId, String areaId);
         public abstract void verifiedCar(EntityBean bean);

         public abstract void getEvaluationDetail(String evaluationId, String areaId);

         //上传图片
         public abstract void uploadPhoto(String imageInfo, String type);
            //
         public abstract void sendSmsRequest(String mobilePhone, String type);


         public abstract void modifyPwd(String mobilePhone, String oldPwd, String newPwd, String confirmNewPwd);
         //删除车辆
         public abstract void deleteCar(String carId);
         //编辑车辆
         public abstract void editCar(EntityBean bean);
         //获取消息列表
         public abstract void getMessageList();
         //获取消息详情
         public abstract void getMessageDetail(String mid, String companyId);
    }
}
